/**
 *author:yhb
 */
package com.towker.frame.dao.rbac;

import java.util.*;
import org.springframework.stereotype.Repository;

import com.towker.core.db.*;
import com.towker.frame.model.rbac.Role;

@Repository
public class RoleDao extends BaseDao<Role, Long>
{
	@SuppressWarnings("unchecked")
	@Override
	public Class getEntityClass()
	{
		return Role.class;
	}
	
	/**
	 * 功能：根据系统标识，删除角色信息。
	 * 输入：systemid-所要删除的角色所在的系统标识。
	 * 输出：无。
	 * 备注：将系统标识所对应的角色从数据库中删除。
	 * 示例：RoleDao.delRoleBySystemid(-1L);删除系统标识为"-1"的系统下的所有角色。
	 * */
	public void delRoleBySystemid(Long systemid)
	{
		this.getSqlSessionTemplate().delete(getIbatisMapperNamespace() + ".delRoleBySystemid", systemid);
	}
	
	/**
	 * 根据id字符串来进行日志删除批处理。
	 * */
	public void delByIds(Long[] ids){
		this.getSqlSessionTemplate().delete(getIbatisMapperNamespace()+".delByIds", ids);
	}

	/**
	 * 根据系统删除所有的角色。	 */
	public void delRoleAndRelatedBySysid(long sysid)
	{
		this.getSqlSessionTemplate().delete(getIbatisMapperNamespace() + ".delBySysid", sysid);
	}
	
	/**
	 * 根据系统和角色名称过滤条件获得角色数据

	 */
	@SuppressWarnings("unchecked")
	public List<Role> getRoleListBySystemAndName(long system, String name)
	{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("system", system);
		map.put("name", name);
		return (List<Role>) this.getSqlSessionTemplate().selectList(getIbatisMapperNamespace() + ".getRoleListBySystemAndName", map);
	}
	
	/**
	 * 获得所有的角色。
	 * */
	@SuppressWarnings("unchecked")
	public List<Role> getRole()
	{
		return getSqlSessionTemplate().selectList("Role.getRole", null);
	}
	
	/**
	 * 获得系统下的所有角色。
	 * */
	@SuppressWarnings("unchecked")
	public List<Role> getRolesBySysid(long sysid)
	{
		return getSqlSessionTemplate().selectList("Role.getRolesBySysid", sysid);
	}
	
	@SuppressWarnings("unchecked")
	public List<Role> getRoleByUserid(long userid)
	{
		return (List<Role>)getSqlSessionTemplate().selectList(this.getIbatisMapperNamespace()+".getRoleByUserid", userid);
	}
	
	/**
	 * 根据用户和系统取得角色
	 * @param sysId
	 * @param userId
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Role> getBySystemAndUser(long sysId,long userId)
	{
		Map map=new HashMap();
		map.put("systemid", sysId);
		map.put("userId", userId);
		return getSqlSessionTemplate().selectList("Role.getBySystemAndUser", map);
	}
}
